0133ef6230840109c0dc1e8b773a11dd196b7711,java/servers/src/org/xtreemfs/osd/operations/WriteOperation.java,WriteOperation,startRequest,#OSDRequest#,51

Before Change


            master.dataReceived(rq.getRPCRequest().getData().capacity());

            // TODO(jdillmann): Use centralized method to check if a lease is required.
            if (rq.getLocationList().getNumReplicas() > 1
                    && ReplicaUpdatePolicies.isRwReplicated(rq.getLocationList().getReplicaUpdatePolicy())) {
                replicatedWrite(rq,args,syncWrite);
            } else {

After Change


            return;
        }
        
        int numReplicas = rq.getLocationList().getNumReplicas();
        String replicaUpdatePolicy = rq.getLocationList().getReplicaUpdatePolicy();

        if (ReplicaUpdatePolicies.isRO(replicaUpdatePolicy)) {
            // file is read only
            rq.sendError(ErrorType.ERRNO, POSIXErrno.POSIX_ERROR_EPERM, "Cannot write on read-only files.");
        } else {

            boolean syncWrite = (rq.getCapability().getAccessMode() & SYSTEM_V_FCNTL.SYSTEM_V_FCNTL_H_O_SYNC.getNumber()) > 0;


            master.objectReceived();
            master.dataReceived(rq.getRPCRequest().getData().capacity());

            if (numReplicas > 1 && ReplicaUpdatePolicies.isRW(replicaUpdatePolicy)) {
                replicatedWrite(rq, args, syncWrite);
            } else if (numReplicas == 1) {

                ReusableBuffer viewBuffer = rq.getRPCRequest().getData().createViewBuffer();
                master.getStorageStage().writeObject(args.getFileId(), args.getObjectNumber(), sp,
                        args.getOffset(), viewBuffer, rq.getCowPolicy(),
                        rq.getLocationList(), syncWrite, null, rq, viewBuffer, new WriteObjectCallback() {

                            @Override
                            public void writeComplete(OSDWriteResponse result, ErrorResponse error) {
                                sendResult(rq, result, error);
                            }
                        });
            } else {
                rq.sendError(ErrorType.ERRNO, POSIXErrno.POSIX_ERROR_EINVAL,
                        "Invalid ReplicaUpdatePolicy: " + replicaUpdatePolicy);
            }
        }
    }